#pragma once

#include <map>

#include "ObserverLib/OcLibPublic.h"

namespace ObserverLib {

	class ObserverLib_EXPORT ObservMangerBase
{
public:
public:
	virtual ~ObservMangerBase(void);

protected:
	ObservMangerBase(void);
  
public:

	virtual HRESULT OnUpdate(void* pSender, LPARAM lHint, WPARAM wHint, SubjectObserverType type = EObserver_ALL);

public:
	void Add(ObserverBase* pConnector, SubjectObserverType type = EObserver_Default);
	void Del(ObserverBase* pConnector);


protected:
	std::map<DWORD_PTR, ObserverBase*> m_aInstances;

};

}

using namespace ObserverLib;



